﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;
using VentaElectrodomesticos.AbmUsuario;
using VentaElectrodomesticos.Utilities;

namespace VentaElectrodomesticos.AbmEmpleado
{
    public partial class FormAltaEmpleado : Form
    {
        private ClaseSQL sql;

        public FormAltaEmpleado()
        {
            InitializeComponent();
            sql = new ClaseSQL();
            sql.llenarComboSimple(this.cbProvincia,"SELECT nomProvincia FROM LAG.provincias");
            sql.llenarComboSimple(this.cbSucursal, "SELECT idSucursal FROM LAG.sucursales");
            sql.llenarComboSimple(this.cbTipo, "select nomTipoUsu from LAG.usuarios_tipos");
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonAceptar_Click(object sender, EventArgs e)
        {
            if (this.validarCampos())
            {
                try
                {
                    sql.Open();
                    String[,] parametros = new String[2, 9];
                    String sp = "LAG.sp_altaEmpleado";
                    parametros[0, 0] = "@nombre";
                    parametros[1, 0] = this.tbNombre.Text;
                    parametros[0, 1] = "@apellido";
                    parametros[1, 1] = this.tbApellido.Text;
                    parametros[0, 2] = "@dni";
                    parametros[1, 2] = this.tbDni.Text;
                    parametros[0, 3] = "@mail";
                    parametros[1, 3] = this.tbMail.Text;
                    parametros[0, 4] = "@direccion";
                    parametros[1, 4] = this.tbDireccion.Text;
                    parametros[0, 5] = "@telefono";
                    parametros[1, 5] = this.tbTelefono.Text;
                    parametros[0, 6] = "@provincia";
                    parametros[1, 6] = this.cbProvincia.SelectedItem.ToString();
                    parametros[0, 7] = "@idSucursal";
                    parametros[1, 7] = this.cbSucursal.SelectedItem.ToString();
                    parametros[0, 8] = "@tipo";
                    parametros[1, 8] = this.cbTipo.SelectedItem.ToString();

                    SqlDataReader reader = sql.ejecutarStoredProcedure(sp, parametros);
                    if (reader != null)
                    {
                        MessageBox.Show("Se ha dado de alta el empleado " + this.tbNombre.Text + " " + this.tbApellido.Text, "Success");
                        this.Close();
                    }
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error app");
                }
                finally
                {
                    sql.Close();
                }
            }
            else
            {
                MessageBox.Show("Hay campos con datos no validos", "Error");
            }
        }

        private bool validarCampos()
        {
            bool vDni = this.validarDni();
            bool vNombre = !Utils.campoVacio(tbNombre, errorProvider, "Ingrese un nombre");
            bool vApellido = !Utils.campoVacio(tbApellido, errorProvider, "Ingrese un apellido");
            bool vMail = !Utils.campoVacio(tbMail, errorProvider, "Ingrese un mail");
            bool vTelefono = !Utils.campoVacio(tbTelefono, errorProvider, "Ingrese un telefono");
            bool vDireccion = !Utils.campoVacio(tbDireccion, errorProvider, "Ingrese una direccion");
            bool vProvincia = !Utils.campoVacio(cbProvincia, errorProvider, "Seleccione una provincia");
            bool vSucursal = !Utils.campoVacio(cbSucursal, errorProvider, "Seleccione una sucursal");
            bool vTipo = !Utils.campoVacio(cbTipo, errorProvider, "Seleccione un tipo");

            return vDni && vNombre && vApellido && vMail && vTelefono && vDireccion && vProvincia && vSucursal && vTipo;
        }

        private bool validarDni()
        {
            bool valido = true;

            if (tbDni.Text.Trim().Length == 0)
            {
                valido = false;
                errorProvider.SetError(tbDni, "Ingrese un numero de DNI");
            }
            else
            {
                errorProvider.SetError(tbDni, "");
            }

            return valido;
        }


        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9\b]+"))
                e.Handled = true;
        }
    }
}
